﻿using System;
using System.Collections.Generic;
using Runtime.Services.Battle.Entity;

namespace Runtime.Services.BattleSkill {

    /// <summary>
    /// 战斗Buff应用者
    /// </summary>
    public interface IDFR_BattleBuffApplier {

        /// <summary>
        /// 获取所有Buff
        /// </summary>
        IEnumerable<IDFR_BattleBuffProvider> BuffProviders { get; }

        /// <summary>
        /// 添加Buff
        /// </summary>
        /// <param name="buffProvider">Buff提供者</param>
        void AddBuff(IDFR_BattleBuffProvider buffProvider);

        /// <summary>
        /// 移除Buff
        /// </summary>
        /// <param name="buffProvider">Buff提供者</param>
        void RemoveBuff(IDFR_BattleBuffProvider buffProvider);

        /// <summary>
        /// 移除Buff
        /// </summary>
        /// <param name="effectEntityID">效果ID</param>
        /// <param name="onRemove">移除时行为</param>
        void RemoveBuff(DFR_BattleEntityID effectEntityID, Action<IDFR_BattleBuffProvider> onRemove);

        /// <summary>
        /// 同步一次显示位置
        /// </summary>
        void SyncBuffPositionOnce();
    }
}
